#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define A(i) a[i-1]
int heapify(int *a,int p,int n)
{
	int i,j;
	int temp;
	int l,r,k;
	l=2*p;
	r=(l==n)?l:(l+1);
	temp=A(p);
	if(l<=n)
	{
		k=(A(l)<A(r))?r:l;
		if(temp<A(k)) A(p)=A(k),A(k)=temp,heapify(a,k,n);
		return 0;
	}
}
			


int buildheap(int *a,int n)
{
	int i;
	for(i=n/2;i>0;i--)
	{
		heapify(a,i,n);
	}
}
int heapsort(int *a,int n)
{
	int i,temp;
	buildheap(a,n);
	for(i=0;i<n;i++) printf("%d ",a[i]);
	printf("\n");
	for(i=1;i<n;i++)
	{
		temp=A(n+1-i);
		A(n+1-i)=A(1);
		A(1)=temp;
		heapify(a,1,n-(i));
	}
}
int main()
{
	int i,j,k;
	int n;
	int *a;
	scanf("%d",&n);
	a=(int *)malloc(n*sizeof(int));
	for(i=0;i<n;i++) scanf("%d",&a[i]);
	heapsort(a,n);
	for(i=0;i<n;i++) printf("%d ",a[i]);
	printf("\n");
	free(a);
	return 0;
}
